A computer network is a collection of interconnected computing devices that can exchange data and share resources. Example network devices include layer two devices that operate within the second layer of the Open Systems Interconnection (OSI) reference model, i.e., the data link layer, and layer three devices that operate within the third layer of the OSI reference model, i.e., the network layer. Network devices within computer networks often include a control unit that provides control plane functionality for the network device and one or more forwarding units for routing or switching data units, e.g., packets. In some cases, for example, a network device may include a plurality of packet processors and a switch fabric that collectively provide a forwarding plane for forwarding network traffic.
The control plane functionality provided by the network device include storing network topologies in the form of a routing information base (RIB), executing routing protocols to communicate with peer routing devices to maintain and update the RIB, and providing a management interface to allow user access and configuration of the network device. The control unit maintains routing information that represents the overall topology of the network and defines routes to destination prefixes within the network.
The control unit derives a forwarding information base (FIB) that defines forwarding path elements for packet lookup and other processing operations to be performed by the forwarding units, the FIB being generated by the control unit in accordance with the routing information and control information. The control unit installs the FIB within the forwarding plane to programmatically configure the forwarding units. The representation of the FIB stored to forwarding units may be referred to as the hardware FIB.
The data and instructions that constitute the forwarding path elements may be connected and arranged into a forwarding topology that defines an internal forwarding path for each incoming packet received by the network device. For example, to generate a route table lookup forwarding path element, the control unit selects routes defined by the network topology and maps packet key information (e.g., destination information and other select information from a packet header) to one or more specific next hop network devices and ultimately to one or more specific output interfaces of interface cards of the network device. In some cases, the control unit may install the forwarding path element into each of the forwarding units to update the FIB within each of the forwarding units and control traffic forwarding within the forwarding plane. For a given packet, a forwarding unit executes the forwarding path elements as defined by the internal forwarding path of the forwarding unit for the packet to perform the actions defined and configured by the control unit within the forwarding unit. Bifurcating control and forwarding plane functionality allows the FIB in each of forwarding units to be updated without degrading packet forwarding performance of the network device.